package com.jinzhi.jzweb.domain;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;

import com.baomidou.mybatisplus.enums.IdType;
import com.jinzhi.jzweb.domain.modelConfig.PageInfo;
import com.jinzhi.jzweb.pojo.SpecJsonVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * 
 * <pre>
 * 订单规格配置表
 * </pre>
 * <small> 2024-09-18 16:30:13 | lance</small>
 */
@Data
@SuppressWarnings("serial")
@TableName("jz_order_specs")
//这是的这里继承的基础服务类，有几个基本字段
public class OrderSpecsDO extends PageInfo implements Serializable {
    @ApiModelProperty("唯一标识")
    @TableId(value = "id", type = IdType.AUTO)
	private Long id;

    /** 订单编号 */
    @ApiModelProperty("订单编号")
    @Excel(name = "订单编号" ,needMerge = true,width = 30)
    @TableField("order_number")
    private String orderNumber;

    /** 年份 */
    @ApiModelProperty("年份")
    @Excel(name = "年份" ,needMerge = true,width = 30)
    @TableField("year")
    private Integer year;

    /** 单位名称 */
    @ApiModelProperty("单位名称")
    @TableField("unit_name")
    private String unitName;

    /** 商品分类（0.教材） */
    @ApiModelProperty("商品分类（0.教材")
    @TableField("category")
    private Integer category;

    /** 商品类型id */
    @ApiModelProperty("商品类型id")
    @TableField("type_id")
    private Long typeId;

    /** 商品类型名称 */
    @ApiModelProperty("商品类型")
    @TableField(exist = false)
    private String typeName;

    /** 教材规格 */
    @ExcelEntity(name = "")
    @TableField(exist = false)
    private SpecJsonVo specJsonVo;

    /** 商品价格（元） */
    @ApiModelProperty("商品价格（元）")
    @TableField(exist = false)
    private String money;

    /** 总价（元） */
    @ApiModelProperty("总价")
    @TableField("total_amount")
    private BigDecimal totalAmount;

    /** 商品规格 */
    @ApiModelProperty("商品规格（json [{spec:规格,number:数量,discount:折扣,money:金额}]）")
    @TableField("specs")
    private String specs;

    /** 开票名称 */
    @ApiModelProperty("开票名称")
    @TableField("billing_name")
    private String billingName;

    /** 纳税识别号 */
    @ApiModelProperty("纳税识别号")
    @TableField("billing_number")
    private String billingNumber;

    /** 开户地址 */
    @ApiModelProperty("开户地址")
    @TableField("billing_address")
    private String billingAddress;

    /** 开户行账户 */
    @ApiModelProperty("开户行账户")
    @TableField("billing_account_number")
    private String billingAccountNumber;

    /** 开户行邮箱 */
    @ApiModelProperty("开户行邮箱")
    @TableField("billing_mailbox")
    private String billingMailbox;

    /** 发票审核描述 */
    @ApiModelProperty("发票审核描述")
    @TableField("state_money_mark")
    private String stateMoneyMark;

    /** 发票类型 纸质发票跟电子发票 */
    @ApiModelProperty("发票类型 纸质发票跟电子发票")
    @TableField("invoice_type")
    private String invoiceType;

    /** 发票地址 */
    @ApiModelProperty("发票地址")
    @TableField("invoice_address")
    private String invoiceAddress;

    /** 创建人id */
    @ApiModelProperty("创建人id")
    @TableField("creater_id")
    private Long createrId;

    /** 下单人 */
    @Excel(name = "下单人" ,needMerge = true,width = 30)
    @ApiModelProperty("下单人")
    @TableField(exist = false)
    private String createrName;

    /** 下单时间 */
    @ApiModelProperty("下单时间")
    @Excel(name = "下单时间" ,needMerge = true,width = 30,exportFormat = "yyyy-MM-dd hh:mm:ss")
    @TableField("creater_date")
    private Date createrDate;

    /** 修改人id */
    @ApiModelProperty("修改人id")
    @TableField("updater_id")
    private Long updaterId;

    /** 修改时间 */
    @ApiModelProperty("修改时间")
    @TableField("update_date")
    private Date updateDate;

    /** 省份 */
    @ApiModelProperty("省份")
    @Excel(name = "省份" ,needMerge = true,width = 30)
    @TableField("province")
    private String province;

    /** 市 */
    @Excel(name = "市" ,needMerge = true,width = 30)
    @ApiModelProperty("市")
    @TableField("city")
    private String city;

    /** 县 */
    @Excel(name = "县" ,needMerge = true,width = 30)
    @ApiModelProperty("县")
    @TableField("county")
    private String county;

    /** 详细地址 */
    @Excel(name = "详细地址" ,needMerge = true,width = 30)
    @ApiModelProperty("详细地址")
    @TableField("address")
    private String address;

    /** 收件人 */
    @Excel(name = "收件人" ,needMerge = true,width = 30)
    @ApiModelProperty("收件人")
    @TableField("recipient")
    private String recipient;

    /** 收件人电话 */
    @Excel(name = "收件人电话" ,needMerge = true,width = 30)
    @ApiModelProperty("收件人电话")
    @TableField("telephone")
    private String telephone;

    /** 快递名称 */
    @Excel(name = "快递名称" ,needMerge = true,width = 30)
    @ApiModelProperty("快递名称")
    @TableField("tracking_name")
    private String trackingName;

    /** 快递单号 */
    @Excel(name = "快递单号" ,needMerge = true,width = 30)
    @ApiModelProperty("快递单号")
    @TableField("tracking_number")
    private String trackingNumber;

    /** 是否发货（0未发货 1已发货） */
    @Excel(name = "是否发货" ,needMerge = true,width = 30,replace = {"未发货_0","已发货_1"})
    @ApiModelProperty("是否发货（0未发货 1已发货）")
    @TableField("is_delivery")
    private String isDelivery;


    /** 审核状态：0未审核，1通过，2不通过 */
    @ApiModelProperty("审核状态：0未审核，1通过，2不通过")
    @Excel(name = "审核状态" ,needMerge = true,width = 30,replace = {"未审核_0","审核通过_1","审核未通过_2"})
    @TableField("status")
    private Integer status;

    /** 备注 */
    @Excel(name = "备注" ,needMerge = true,width = 30)
    @ApiModelProperty("备注")
    @TableField("remark")
    private String remark;

    /** 是否包邮 0不包邮，1包邮 */
    @Excel(name = "是否包邮" ,needMerge = true,width = 30,replace = {"不包邮_0","包邮_1"})
    @ApiModelProperty("是否包邮 0不包邮，1包邮")
    @TableField("free_shipping")
    private Integer freeShipping;


    /** 订单开始时间 */
    @ApiModelProperty("订单开始时间")
    @TableField("order_start_time")
    private Date orderStartTime;


    /** 订单所属省份 */
    @Excel(name = "订单所属省份" ,needMerge = true,width = 30)
    @ApiModelProperty("订单所属省份")
    @TableField("order_province")
    private String orderProvince;


    /** 订单所属市 */
    @Excel(name = "订单所属市" ,needMerge = true,width = 30)
    @ApiModelProperty("订单所属市")
    @TableField("order_city")
    private String orderCity;

    /**   2 未开票  3以开票 */
    @TableField("state_money")
    @ApiModelProperty("2 未开票  3以开票")
    private Integer stateMoney;

    /**  0   未审核    1 未收款  2已收款   3已抵款  4已抵扣并收款*/
    @TableField("state_collection")
    @Excel(name = "收款状态" ,needMerge = true,width = 30,replace = {"未审核_0","未收款_1","已收款_2"})
    @ApiModelProperty(" 0   未审核    1 未收款  2已收款   3已抵款  4已抵扣并收款")
    private Integer stateCollection;

    /** 预收款 */
    @TableField("advance_payment")
    @ApiModelProperty("预收款")
    private BigDecimal advancePayment;

    /** 实际收款金额 */
    @Excel(name = "实际收款" ,needMerge = true,width = 30)
    @TableField("actual_money")
    @ApiModelProperty("实际收款金额")
    private BigDecimal actualMoney;

    /** 退款状态 0 未退款 1 已退款 */
    @TableField("refund_state")
    @ApiModelProperty("退款状态 0 未退款 1 已退款")
    private Integer refundState;

    /** 退款金额 */
    @TableField("refund_money")
    @ApiModelProperty("退款金额")
    private BigDecimal refundMoney;


    /** 收款时间 */
    @ApiModelProperty("收款时间")
    @Excel(name = "收款时间" ,needMerge = true,width = 30,exportFormat = "yyyy-MM-dd hh:mm:ss")
    @TableField("collection_time")
    private Date collectionTime;


    /** 订单类型（0下单，1其他） */
    @ApiModelProperty("订单类型（0下单，1其他）")
    @TableField("order_type")
    private Integer orderType;

    /** 书籍名称 */
    @ApiModelProperty("书籍名称")
    @TableField(exist = false)
    private String bookName;

    /** id集合  */
    @ApiModelProperty("id集合")
    @TableField(exist = false)
    private List<Long> idList;


}
